Method and apparatus for receiving, storing, and presenting multimedia programming without indexing prior to storage

ABSTRACT

A method and apparatus for improved digital recording and presentation of broadcast information is disclosed. Received broadcast data, which may include video, audio, private, or other data, relating to one or more particular content programs, is presented from an input section to a buffer and recorded directly onto a storage device without any intelligent parsing, such as indexing, and without any manipulation by intermediate hardware or software functions. Upon normal presentation, statistics may be generated to determine the ideal number of frames to skip, the number of bytes to seek, and the size of data files to read from the storage device during time-shifted presentation. Algorithms and processes are provided to dynamically optimize time-shifted presentation. In this way, data may be captured to the storage device more efficiently and economically, and the time-shifted presentation operations may be performed in a smoother, more nuanced manner with the application of appropriate probabilistic algorithms.

RELATED APPLICATIONS

This application is a divisional application of U.S. patent applicationSer. No. 11/512,583, entitled “Method and Apparatus for Receiving,Storing, and Presenting Multimedia Programming without Indexing Prior toStorage”, filed Aug. 29, 2006, which is hereby incorporated herein byreference in its entirety.

FIELD OF THE INVENTION

The present disclosure relates to a method and apparatus for improveddigital recording and presentation of broadcast information.Specifically, the present disclosure relates to a method and apparatusfor receiving, storing, and presenting broadcast information inreal-time and time-shifted modes of operation.

BACKGROUND OF THE INVENTION

Digital data recorders, such as digital video recorders (DVRs) have beenknown since at least 1992. Standard DVRs permit users to recordbroadcast information to a storage device for later playback. Typically,DVRs enable time-shifted (trick-play) modes of operation that aresimilar to functions found on video cassette recorders, with which mostusers are familiar. For example, DVRs may have functions such as“pause,” “rewind,” “fast-forward,” “skip,” and “slow motion.” One of thefirst commercially available DVRs was the MediaStream system developedand marketed by Media4, now part of EchoStar Communications Corporation.In April 1996, Media4 introduced the MediaStream receiver, which was aDigital Video Broadcasting-compliant satellite receiver system withintegrated DVR functions. The MediaStream system was designed to bothrecord and present programs simultaneously, allowing one program to beboth recorded and presented. The MediaStream receiver systemdemultiplexed a Moving Picture Experts Group (MPEG) transport streamthat contained one or more television programs, for example, and filledseparate video packetized elementary stream (PES) and audio PES buffers.The data contained in the buffers was written to disk for later playbackin either normal or trick-play mode. The MediaStream system did nointelligent parsing of the input to generate an index to aid intrick-play modes of operation, but merely performed a “brute-force”search of data stored on the hard disk when performing those functions.

Many methods and systems have been developed for creating indices byintelligently parsing broadcast input streams and using indexinformation generated during input to later find and play backappropriate frames of data. One of the earliest of these systems isdescribed in two patents assigned to Imedia Corporation, U.S. Pat. Nos.5,949,948 and 6,304,714, both to Krause et al. These patents disclose aset-top DVR system for simultaneous presentation and recording ofcompressed digital data. For example, U.S. Pat. No. 5,949,948 disclosesa start-code detector for detecting the beginning of video I-frames inan MPEG data stream, an indexing system that correlates I-frames withaddresses in memory, and a trick-play system that searches the indexinformation to determine which frames to play back in trick-playoperations. Similarly, U.S. Pat. No. 5,614,940, to Cobbley et al., ofIntel, discloses a set-top system that can convert broadcast informationto a digital format, generate during input various index data relatingto the content of the broadcast information, store both the compressedbroadcast data and the related index data, and then retrieve thebroadcast data for playback (in normal or trick-play mode) based uponthe corresponding index information. Similar, front-end, input-sideintelligent parsing and index-based searching methods are disclosed inU.S. Pat. No. 5,956,716 to Kenner, et al., U.S. Pat. No. 5,659,539 toPorter, et al., U.S. Pat. No. 6,167,083 to Sporer, et al., and U.S. Pat.No. 5,577,190 to Peters.

A later recording system, developed at TiVo Inc. and described in thespecification of U.S. Pat. No. 6,233,389, to Barton, et al., alsoemployed a specific type of intelligent parsing/indexing during inputand prior to storage of the broadcast information on a storage device.The system described in that patent employs a special circuit called a“Media Switch” that generates indices and fills separate appropriatebuffers with specific data. The disclosed “Media Switch” mediatesbetween the central processing unit (CPU), storage device, and memoryand thus off-loads the intensive index-based processing of the inputstream from the CPU to a separate device. Also in the Barton, et al.,system, a software “source object” converts the data into data streamsand fills a buffer that is assigned by a central software “transformobject” that is responsible for overall control of buffer assignment.The software “transform object” then writes the data to a hard disk. Thesoftware “transform object” is also responsible for reading data fromthe hard disk, filling buffers with the data, and assigning the filledbuffers to a software “sink object” for later decoding and playback.

These earlier systems may be inefficient and overly complicated in someoperational settings. Such systems require intensive processing duringinput of the entire set of broadcast data. Given the high throughputrequired for modern DVR functions, the processing power required duringinput in such systems may tax the CPU or, in the case of the system ofBarton, et al., require specialized hardware and software. Moreover,since much of what is recorded will not be played back in anything otherthan standard mode, the processing power required, and the memoryrequired to store related index information, may be largely wasted. Amore robust, cheaper, and less complicated system is needed.

BRIEF SUMMARY

The methods and systems described herein improve upon prior methods andsystems for receiving broadcast data by eliminating unnecessary parsing,separating, transforming or other processing functions before programdata is stored on a storage device, and by utilizing instead statisticaland probabilistic algorithms to search for and keep track of the programdata when presenting such data form the storage device.

The present disclosure provides methods and systems for efficient inputhandling of broadcast data and dynamic output processing of thebroadcast data in trick-play modes. This is achieved by eliminatingintelligent processing of input data and, instead, writing datapresented by a physical data source directly to the storage device usingan asynchronous, single buffer read/write process, and upon invocationof trick-play modes of operation, performing search operations basedupon statistics or dynamically generated during presentation operationsor received with the broadcast data. Upon normal presentation,statistics may be generated to determine the ideal number of frames toskip, the number of bytes to seek, and the size of data files to readfrom storage during trick-play operation.

Also described herein are algorithms and operations for dynamicallydetermining any required skip, seek, and read values so as to minimizethe use of system resources. In this way, data may be captured to thestorage device more efficiently and economically, and the trick-playoperations can easily be performed in a smoother, more nuanced mannerwith the application of appropriate probabilistic algorithms.

Other features and advantages of the methods and systems describedherein will become apparent from the following detailed description,when it is considered in conjunction with the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

FIG. 1 is a block diagram illustrating a DVR system described herein.

FIG. 2 is a block diagram of the memory allocation in a DVR systemdescribed herein.

FIG. 3 is a block diagram of the memory allocation in a single buffermemory described herein.

FIG. 4 is a flow diagram depicting the storage of data in a DVR systemdescribed herein.

FIG. 5 is a logic diagram of the functions of a record threadapplication described herein.

FIG. 6 is a logic diagram for presentation of stored data in a systemdescribed herein.

DETAILED DESCRIPTION

As a general matter, it is understood that “intelligent analysis,”“intelligent parsing” or “indexing” of an MPEG transport stream meansanalyzing the stream to extract information contained in the video oraudio packets broadcasted for the purposes of associating video- oraudio-specific information, such as frame presentation time information,with system-specific information, such as position in a stored datafile.

The following description sets forth numerous examples of methods andsystems described herein for the storage and presentation of multimediaprogramming, without the need for indexing prior to storage. It shouldbe recognized, however, that such description is not intended as alimitation on the scope of the present invention, but is insteadprovided as a description of exemplary embodiments.

I. System for Presentation and Storage

With reference to FIG. 1, a digital video recorder (DVR) embodiment 100receives an encrypted, scrambled or clear broadcast signal from a directbroadcast satellite (DBS) system through satellite receiver 110. Inalternate embodiments, additional or different broadcasting sources andformats may be used such as off-air or terrestrial transmissions, orcable television (TV). Typically, the broadcast signals are televisionor other multimedia programming signals. The signals may be highdefinition (HD) television, standard definition (SD) television,audio-only signals or other signals. Such a signal may contain numerousfrequency bands of data, with each band containing numerous TV contentprograms (e.g., CNN®, HBO®, etc.). In a preferred embodiment, the signalreceived from receiver 110 contains multimedia programming transmittedas an MPEG transport stream, though alternate formats, such as analog TVformats, may be used. An MPEG transport stream (transport stream)contains packets of video-only, audio-only, or other data. Each packetmay have associated header information, including packet identification(PID) information. PID information may identify the data type of thepacket (video, audio, other) and the content programming associated withthe packet, as well as other information. Video and audio packetsencoded in the transport stream may also contain presentation timestamp(PTS) data that allows for synchronization of the packets. The packetsmay also contain start code data that identifies the beginning of avideo or audio frame.

Broadcast multimedia programming is received at receiver 110 andforwarded to input section 120 of DVR 100. The signal may be a modulatedbroadcast signal spanning a broadcast frequency band. Receiver 110 maytranslate the signal it receives to an intermediate frequency beforeforwarding it to DVR 100. Tuner 121 of section 120 tunes the signalreceived from receiver 110 to a frequency range (channel) that containscontent programming of interest. Input section 120 may also contain ademodulator 122 that demodulates the broadcast signal to produce ademodulated transport stream. Section 120 may also contain ademultiplexor 123 that filters the transport stream according toprogramming-specific PID's to produce a transport stream that containsonly packets associated with the content programming of interest. In oneembodiment, demultiplexor 123 may produce a separate video-onlypacketized elementary stream (PES) and a separate audio-only PES stream.In another embodiment, a single transport stream is produced withinterleaved video and audio data. Demultiplexor 123 may also filter outthe other (e.g., non-video and non-audio) data packets for use in DVR100. Input section 120 may also perform additional functions such aserror correction, descrambling, decryption, analog-to-digital conversionor a number of other basic signal processing functions.

The MPEG transport stream outputted from section 120 may be routed to adisplay section 130 for immediate presentation in real time. Displaysection 130 contains at least an MPEG video decoder 131 and an MPEGaudio decoder 132. Display section 130 may further containdigital-to-analog converters, encoders, additional decoders, video oraudio filters, and/or memory buffers, as needed for delivery to atelevision 140 or other display device.

The MPEG transport stream outputted from section 120 may also be routedto a storage device, such as hard disk 150, for later presentation orfor presentation in other than real time. In a preferred embodiment,program logic uses a single buffer for transfer to hard disk 150,without the use of additional buffers. Preferably, the transport streamreceived from section 120 is written onto hard disk 150, without firstanalyzing or indexing MPEG video and/or audio frame information, as anMPEG transport stream file (TSP file). In another embodiment, the MPEGinformation is stored as a PES file or other suitable file format. Bydoing so, the MPEG transport stream is efficiently stored for later usewithout employing significant system resources. Time sequence, PTS,start code or other embedded MPEG frame information need not beanalyzed, indexed or otherwise correlated with system-specificinformation, such as TSP file position, prior to storage. Separate TSPfiles may be maintained for each separately recorded content program orfor each separate recording session. Hard disk 150 is connected todisplay section 130 to provide both contiguous and non-contiguouspresentation of any content program stored as a TSP file on hard disk150. Section 120 is capable of simultaneously outputting to both displaysection 130 and hard disk 150 for simultaneous storage and presentationof content programming.

DVR 100 also includes at least one processor 160 and at least one systemRAM module 170. Program logic, such as record logic, normal playbacklogic or trick playback logic necessary for the operation of DVR 100 maybe executed on processor 160 in conjunction with RAM module 170. Inalternate embodiments, separate processors and separate RAM modules maybe employed for the functions of input, storage, display, and/or otherfunctions of DVR 100. In one embodiment, DVR 100 is a system operatingon a Linux operating system. In alternate embodiments the DVR may be asystem operating on a UNIX, Windows, Mac OS, or other operating system.DVR 100 may comprise multiple input sections, display sections, storagedevices, processors and RAM modules. In this way, DVR 100 mayaccommodate a number of signal sources and display and record a numberof content programs, simultaneously or separately.

For additional descriptions of digital video recorder systems, see U.S.patent application Ser. No. 10/655,703, filed Sep. 5, 2003, U.S. patentapplication Ser. No. 10/940,107, filed Sep. 13, 2004, and U.S. patentapplication Ser. No. 10/940,078, filed Sep. 13, 2004, all of which arehereby incorporated by reference in their entireties for all purposes.

II. Storage Operations

In one embodiment, the recording program logic operates using a singlememory buffer, having a fixed memory address that can be accessedasynchronously by both a record driver and a record thread application.This single buffer, also referred to as a record buffer, is filled by arecord driver. The data in the single buffer is then moved in a singleoperation from the single buffer to hard disk 150 by a record threadapplication. Preferably, recording program logic is not flow controlledand the record driver and the record thread application write or read toor from the single buffer independently, without either applicationhaving control over the other. More preferably, the single record bufferis a circular buffer. Use of a single buffer eliminates the need fortransfer between two or more separate buffers, which may conserveprocessor and other system resources. A single buffer method may furtherincrease system efficiency by eliminating the need for communicationbetween a record driver and a record thread application. Preferably, DVR100 employs one record driver and one record thread application for eachtuner in the DVR.

FIG. 2 is the system memory allocation in one embodiment of DVR 100.System drivers, including the record driver(s), may occupy driver space210. Single buffer memory 220 is reserved by the Linux kernel at systemstartup. In a preferred embodiment, single buffer memory 220 is assigneda fixed memory address during each system startup. System memory alsocontains a Linux kernel and user space 230 that may contain a playbackbuffer or other user-specific elements. In one embodiment, the Linuxkernel reserves a fixed address for memory 220. Single buffer memory 220may be logically divided into one or more transport buffers (not shown).In a preferred embodiment having fixed memory addresses for singlebuffer memory 220, the record driver(s) in the driver space 210calculates a transport buffer memory address using a hard-coded offsetfrom the top of the kernel memory. The hard-code offset is determined bythe high_memory symbol exported by the Linux kernel in space 230. Therecord thread application(s) residing in space 230 uses actualhard-coded transport buffer address(es), as well.

FIG. 3 depicts a specific embodiment of memory allocation in singlebuffer memory 220, the single buffer shared asynchronously by both therecord driver(s) and the record thread application(s). Memory 220includes one record information region 310 and a transport buffer for atleast each tuner in the system. In a preferred embodiment, a singletransport buffer exists for each tuner in DVR 100. Depicted areTransport Buffer 0 320, Transport Buffer 1 330 and Transport Buffer 2340, though more or fewer transport buffers may be used. In oneembodiment, record information region 310 is one page of memory 4096bytes in size and contains an array of structures where informationregarding the position and size of the data written to each transportbuffer by the record driver(s) is stored and updated by the recorddriver(s). The record thread application(s) may access these structures.

FIG. 4 depicts handling of a transport stream intended for storage, inDVR 100. Transport stream data 410 received from input section 120 iswritten to transport buffer 430 of single memory buffer 220 by recorddriver 420. In an alternate embodiment, the data is moved into thetransport buffer by the hardware of input section 120. Record driver 420also updates information page 310 to indicate the position of thedriver's record pointer. The record driver operates in real time astransport stream data is received from the input section without flowcontrol.

Record thread application 440, which stores a last read position,accesses information page 310 to determine the size of un-written datain buffer 220. Record thread application 440 transfers the un-writtendata directly to hard disk 150 for storage as a TSP file.

FIG. 5 depicts a simplified flow diagram for one embodiment of a recordthread application loop 500 operating on DVR 100. The record threadapplication sleeps on a “Start” semaphore until a master applicationsignals the semaphore allowing the record thread to begin execution,process 510. Once the record thread executes, several local variablesmay be initialized and the execution loop is entered, process 520. Inprocess 530, the execution loop reads the recording informationstructure associated with the transport buffer associated with therecord thread application to determine how much unread data exists inthe transport buffer and the location of that data. Also in process 530,this data is then written to hard disk 150, even if it is determinedthat zero bytes of data exist. The record thread application transfersthe data to hard disk 150 via a direct IO (input/output) transfer,without processing the data through the record thread application. Afterbeing written to the hard disk 150, several local variables, such aslast read address, may be updated, process 530. In process 540, therecord thread may then go into an interruptible sleep, via a timed“Sleep” semaphore. The timeout period of the “Sleep” semaphore may bebased on the service type, e.g., SD or HD television, or audio-only.This timed “Sleep” semaphore allows other processes in the system torun. If the “Sleep” semaphore times out, then the record thread executesanother loop. If the master application has signaled the record threadto stop execution, then the semaphore does not time out, and theapplication terminates at process 550. The record thread applicationoperates asynchronously with respect to the record driver. In alternateembodiments, the record thread application may be a record task or arecord process application.

III. Presentation from Storage

DVR 100 accommodates several presentation modes for the stored video andaudio data. In one embodiment, presentation modes include forward play,pause, reverse play, slow motion forward or rewind, fast forward orrewind, and skip forward or back. Using the methods and systemsdescribed herein, DVR 100 is able to accommodate these modes withoutusing previously indexed MPEG frame information or the need for specificframe positioning or time sequence information. By avoiding the need todetermine time sequence information for all stored video and/or audiodata before recording and presentation from storage, system resourcesare conserved. In one embodiment, presentation from a storage devicesuch as hard disk 150 is performed by reading portions of the storedMPEG transport stream to a read buffer prior to outputting to displaysection 130. In one embodiment, the read buffer is a circular readbuffer. The presentation methods described herein may be employed withvideo-only data, audio-only data or combined video and audio data.

MPEG video compression standards reduce the amount of data required totransmit or store a video signal by representing certain frames of videoas a delta from a previous or subsequent frame. MPEG video generallyconsists of three major frame types. I-frames, or intra-coded frames,are pictures encoded without referencing any other frame. P-frames, orpredictive frames, are pictures encoded by referencing the delta fromprevious frames. B-frames, or bi-predictive frames, are pictures encodedby referencing the delta from previous and subsequent frames. MPEG-4specifies an additional intra-coded frame type, the IRD-frame, which mayalso be used. It is understood that an IRD-frame may be substituted foran I-frame in the methods and systems described herein. To display acomplete image, at least one intra-coded frame (I or IRD) must bedecoded and presented. MPEG encoded video streams are broadcast in realtime at a predetermined frame per second (fps) rate. The fps may varydepending on the content program. For example, the frame rate may beapproximately 30 fps (standard television), 24 fps (movies), 25 fps(some foreign content), or other frame rate. MPEG standards may also beused for the compression of audio data into a frame format.

Presentation modes may be conceptually divided into three categories, asprovided:

TABLE 1 Linear (play) forward slow motion forward pause contiguous(trick) rewind fast forward (certain speeds) fast rewind (certainspeeds) non- fast forward (certain speeds) contiguous (trick) fastrewind (certain speeds) skip forward skip back

Linear(play) is any presentation mode that displays every frame (I, P,and B) in sequential order. Forward mode, also referred to as “normal”play, which is presentation of all the video data at its broadcast fpsrate, is a form of linear(play). The terminology “trick” is used todenote any presentation mode that requires either non-contiguous readingfrom the TSP file (“seeking”) or display of fewer than the total numberof picture frames (“skipping”). Contiguous(trick) is any trick mode thatloads stored multimedia data contiguously. Non-contiguous(trick) is anytrick mode that loads stored multimedia data non-contiguously. Otherconceptual divisions of the presentation modes may be employed. In oneembodiment, the presentation mode is selected by a user of DVR 100through the use of a remote control device capable of facilitating usercontrol of DVR 100.

FIG. 6 depicts a simplified logic diagram of the steps involved inpresentation once the user selects a change in the desired presentationmode, in a preferred embodiment using data stored as a TSP file.Depending on the presentation mode selected, statistical informationregarding the video data encoded in an MPEG transport stream may be usedto enable presentation without the need to exhaustively analyze the TSPfile from the beginning to find the desired presentation location. Inprocess 600, the statistical data is either “spoofed” (i.e., provided)using non-specific, pre-generated video data statistics or thestatistical data is generated specifically during normal presentation ofthe content program. The following table presents video data statisticalinformation that is spoofed or collected, in one embodiment:

TABLE 2 Statistic: Description: total_num_frames The total number of I,P, and B frames used in the statistics. total_num_I_frames The totalnumber of I frames used in the statistics. avg_frm_size The averageframe size taken from all frames encountered during playback. I_spacingThe average integer number of frames from one I-frame to the next, alsoreferred to as a group of pictures. GOP_size Average group of picturessize. Calculated as an I-frame spacing multiplied by average frame size.Fps Output frames per second.

The information collected during normal presentation may or may not bestored in non-volatile memory for later use. In one embodiment, theinformation is maintained only for the duration of the currentpresentation session. In another embodiment, the statistical informationmay be contained in the transport stream, as broadcast. In an embodimentusing statistical information broadcasted in the transport stream, thestatistical information contained in the transport stream is privatedata contained in the adaptation field of a transport stream packet.

At process 610, the system selects the desired presentation mode andsets the number of frames to be skipped. In an embodiment employing aremote control device, user selection of a presentation mode is handledas a user input, from which DVR 100 determines the number of frames toskip. Skipping frames during presentation results in time-shifteddisplay which a user perceives as accelerated display, expressed asmultiples of the predetermined play rate (e.g., a presentation speedvalue). By way of example, if every 8th I-frame (Nth_I_frame) isdisplayed 2 times (M_repeats) and an I-frame occurs, on average, every15th frame (I_spacing) in the content program, the user would perceivethe presentation as “60×” (Speed) the normal rate. The perceived speedof presentation can be determined by the following formula:

Speed=(I_spacing)*(Nth _(—) I_frame)/(M_repeats)

The product of (I_spacing) and (Nth_I_frame) determines the number offrames to skip, from the last frame presented for display. Generally,the statistical data from process 600 is used to provide (I_spacing).Alternatively, when the desired presentation mode dictates a singleframe skipping event, the user perceives a “jump” or single skipforwards or backwards in an otherwise normal speed presentation.

Selecting the presentation mode may set a number of variable flags. Inone embodiment, the flags set are TRUE/FALSE binary flags such as:“trick,” “contiguous,” and “forward.” In an embodiment employing aremote control device, user seek input based on selection of apresentation mode is used to set the variable flags. The state of theflags may affect subsequent processing steps. In one embodiment, the“contiguous” flag is set as “TRUE” either if every frame is displayed(e.g., linear(play)) or if the number of frames to be skipped is fewerthan or equal to (I_spacing). For example, display is “contiguous” whenfour frames are skipped and an I-frame occurs every 15th frame. In theseinstances, system efficiency may be optimized by loading datacontiguously. Accordingly, certain presentation methods that skip frameswill be considered contiguous, while other methods that also skip framesare designated as non-contiguous. Frames to be skipped can be expressedas a positive value if forward=TRUE and as a negative value ifforward=FALSE.

At process 620, a recycle operation may be performed on the read buffer,depending on whether the contiguous flag is set. If a contiguouspresentation mode is selected, stored data may be loaded contiguously.Accordingly, any portion of the read buffer that is resident but has notbeen forwarded to the display section (unused) can be recycled forpotential use. Recycling conserves system resources by reducing theamount of file data to be read. If a non-contiguous presentation mode isselected, recycle process 620 does not occur and the unused data iscleared from memory or overwritten (flushed).

The size of stored MPEG transport stream file data to be read (readsize) is determined at process 630. Read size is determined by the stateof the contiguous flag. If the mode is contiguous, read size is equal tothe maximum read buffer size minus the recycled data size. Fornon-contiguous modes, in one embodiment, the read size is twice theaverage group of picture size, as determined by process 600. Logically,there is a tradeoff in system efficiency between increasing the readsize and the cost that would be incurred by an additional read event, ifa complete I-frame cannot be located. By setting read size at twice theGOP size but less than the maximum buffer size, system resources areconserved while maintaining a high probability that a complete I-frameis loaded to the read buffer, while in a non-contiguous mode.Alternatively, the non-contiguous mode read size can be determined usingthe following formula, wherein Service_time is the time required tolocate a complete I-frame, P_(miss)(s) is the probability of notlocating a complete I-frame and t_(read)s is the time required toperform a read of size s:

(Service_time)=(P _(miss)(s)+1)*(t _(read) s)

Once the curve for P_(miss)(s) is either provided or determinedempirically within DVR 100 (e.g., through sequential non-contiguouspresentation events) the value of s can be dynamically adjusted tominimize Service_time.

Seek position is calculated at process 640. Seek position is determinedrelative to the current read position in the stored MPEG transportstream file. In one embodiment, the current read position is indicatedby a file pointer. For presentation modes in which both the “forward”and “contiguous” flags were set to “TRUE” during process 610, no seekingshould occur, as data loading will be performed contiguously. Forcontiguous rewind (i.e., contiguous=TRUE, forward=FALSE) in systemshaving a file pointer that only reads forward, seek position is the sumof the recycled data size and the read size determined at 630 (i.e., themaximum buffer size), so that data preceding the current file pointerposition will have been placed into the read buffer, after the readevent. For non-contiguous modes, a seek vector equal to the product ofthe frames to be skipped (set at 610), and the average frame size(determined at 600) is calculated. An adjustment equal to half of theGOP size is also determined to increase accuracy. Seek position iscalculated based on the following formula, wherein (Origin) is thecurrent file pointer position:

$({Seek\_ position}) = {({Origin}) + ({Seek\_ vector}) - \frac{({GOP\_ size})}{2}}$

At process 650, the file pointer seeks to the position determined at640. A portion of the stored MPEG transport stream file equal to theread size determined at 630 is read into the read buffer, process 660.

At process 670, program logic analyzes the data in the read buffer todetermine if a complete I-frame of data is present. In an MPEG transportstream, each packet may be optionally structured with an AdaptationField. The Adaptation Field may contain transport stream statesignaling, stream timing details, transport private data, and/or videosplicing information. Transport private data contained within theAdaptation Field may contain access unit (AU) information. Access unitsare coded representations (e.g., I, B, and P frames) of a unit suitablefor display (presentation unit), such as a video frame. Typically,access unit information signals whether an I-frame start is containedwithin the payload of the transport stream packet. Once an I-frame startis identified, locating another frame start further in the read buffersignals a complete I-frame. If access unit information is not available,program logic can analyze the transport stream payload for start codeinformation, which may signal the start of a video frame. Dataimmediately following the start code indicates the video frame type (I,P, or B). As with access unit information, locating a subsequent videoframe start code after identifying an I-frame start indicates thepresence of a complete I-frame in the buffer. Generally, identificationof I-frames through use of the Adaptation Field data is less systemresource intensive than start code identification. However, start codeinformation is always available while Adaptation Field information isoptionally encoded. As described earlier, the Adaptation Field may alsocontain frame statistical information as private data. In oneembodiment, start code identification is used only when Adaptation Fieldinformation is unavailable. In another embodiment, start code data isalways used either independently or in conjunction with Adaptation Fieldinformation.

At decision 680, program logic determines whether additional data mustbe read. Preferably, DVR 100 is a system having a read buffer at leastequal to the sum of the maximum group of pictures size and the maximumI-frame size. In such a preferred system, a complete I-frame will with ahigh probability be located in the read buffer during any contiguousplay mode, as the maximum read buffer size is employed. In embodimentshaving a read buffer less than the sum of the maximum group of picturessize and the maximum I-frame size, it may be necessary to performadditional recycle processes, additional read processes, and/or to flushat least a portion of the read buffer to locate a complete I-frame. Innon-contiguous mode, which does not recycle and reads less than themaximum read buffer size, an additional data read (“append”) may benecessary if a complete I-frame of data is not located. An append occurswhen the system loops to 660 and reads an additional portion of MPEGtransport stream data from storage equal to the calculated read size andappends the new data to the data already loaded in the read buffer.Depending on the size of the read buffer, a flush of at least a portionof the read buffer may be necessary to allow for additional appendoperations in non-contiguous mode. Program logic will again analyze whatthe read buffer contains to determine if a complete I-frame is loaded,and if a complete I-frame is not loaded, will perform looping read andanalyze processes until a complete I-frame is located.

Once a complete I-frame is located, it is forwarded to display section130 at process 690 for decoding and display. Display section 130 iscapable of outputting video and/or audio signals in a number of formatsfor presentation on a variety of display devices, such as a televisionset. In an embodiment wherein the broadcasted signal is an audio-onlybroadcasted signal, the display device may be a device capable ofpresenting only audio signals, such as a stereo system. DVR 100 mayrepeat the presentation process described as needed to create thedesired presentation mode. Using the methods disclosed herein, a DVRsystem may display MPEG transport stream encoded video and/or audio datain multiple presentation modes including at least normal speed, variablespeed forward and reverse, and skip forward and reverse without havingto linearly analyze the transport stream from the beginning to find thedesired picture frame and without having to analyze and index videoand/or audio frame information prior to storage of the transport stream.

While the present invention has been described with reference to certainpreferred embodiments, those skilled in the art will recognize thatvarious modifications and other embodiments may be provided. These andother embodiments are intended to fall within the scope of the presentinvention. These and other variations upon and modifications to theembodiment described herein are provided for by the present invention,which is limited only by the following claims.

1. A method for storing of multimedia data, the method comprising:providing an input section, wherein the input section is configured toaccept broadcast data and output at least video data relating to asingle broadcast event to a record buffer; and providing a recordapplication, wherein the record application is configured to record thevideo data from the record buffer to a storage device withouttransferring any of the video data into a second buffer before storingthe video data on the storage device; wherein the input section and therecord application are configured to function asynchronously and theinput section and record application are configured to access the recordbuffer simultaneously.